// 统一编辑按钮事件
document.getElementById('editProfileBtn').addEventListener('click', function() {
    // 获取当前用户信息并填充到表单中
    const currentGender = /*[[${currentUser.gender}]]*/ '1';
    const currentPhone = /*[[${currentUser.phone}]]*/ '';

    // 设置性别单选框
    if (currentGender == '1') {
        document.getElementById('editGenderMale').checked = true;
    } else {
        document.getElementById('editGenderFemale').checked = true;
    }

    // 设置手机号
    document.getElementById('editPhone').value = currentPhone;

    // 清空密码字段
    document.getElementById('oldPassword').value = '';
    document.getElementById('newPassword').value = '';
    document.getElementById('confirmPassword').value = '';

    // 隐藏头像预览
    document.getElementById('avatarPreview').style.display = 'none';

    // 显示模态框
    const modal = new bootstrap.Modal(document.getElementById('editProfileModal'));
    modal.show();
});

// 头像预览
document.getElementById('avatarFile').addEventListener('change', function(e) {
    const file = e.target.files[0];
    if (file) {
        const reader = new FileReader();
        reader.onload = function(e) {
            const preview = document.getElementById('avatarPreview');
            preview.src = e.target.result;
            preview.style.display = 'block';
        }
        reader.readAsDataURL(file);
    }
});

// 保存个人信息
document.getElementById('saveProfileBtn').addEventListener('click', function() {
    // 获取表单数据
    const userId = document.getElementById('userId').value;
    const phone = document.getElementById('editPhone').value;
    const gender = document.querySelector('input[name="gender"]:checked').value;

    // 密码验证
    const oldPassword = document.getElementById('oldPassword').value;
    const newPassword = document.getElementById('newPassword').value;
    const confirmPassword = document.getElementById('confirmPassword').value;

    // 如果填写了新密码，则验证密码
    if (newPassword || confirmPassword) {
        if (newPassword !== confirmPassword) {
            alert('新密码与确认密码不一致');
            return;
        }
        if (!oldPassword) {
            alert('请输入原密码');
            return;
        }
    }

    // 获取头像文件
    const avatarFile = document.getElementById('avatarFile').files[0];

    // 如果选择了头像文件，先上传头像
    if (avatarFile) {
        const formData = new FormData();
        formData.append('avatar', avatarFile);

        axios.post('/user/uploadAvatar', formData, {
            headers: {
                'Content-Type': 'multipart/form-data'
            }
        })
            .then(function (response) {
                let data;
                try {
                    data = typeof response.data === 'string' ? JSON.parse(response.data) : response.data;
                } catch (e) {
                    console.error('解析头像上传响应错误:', e);
                    alert('头像上传失败');
                    return;
                }

                if (data.url) {
                    // 头像上传成功，继续更新用户信息
                    updateUserInfo(userId, phone, gender, newPassword, oldPassword, data.url);
                } else {
                    alert('头像上传失败');
                }
            })
            .catch(function (error) {
                console.error('头像上传错误:', error);
                alert('头像上传失败: ' + error.message);
            });
    } else {
        // 没有选择新头像，直接更新用户信息
        updateUserInfo(userId, phone, gender, newPassword, oldPassword, null);
    }
});

// 更新用户信息的函数
function updateUserInfo(userId, phone, gender, newPassword, oldPassword, avatarUrl) {
    // 准备要发送的数据
    const userData = new FormData();
    userData.append('phone', phone);
    userData.append('gender', gender);

    // 只有当提供了新密码时才发送密码相关字段
    if (newPassword) {
        userData.append('password', newPassword);
        userData.append('oldPassword', oldPassword);
    }

    // 如果有新头像URL，则添加到数据中
    if (avatarUrl) {
        userData.append('avatar', avatarUrl);
    }

    // 发送更新请求
    axios.post('/user/update', userData)
        .then(function (response) {
            if (response.data.success) {
                alert('个人信息更新成功');

                // 关闭模态框
                const modal = bootstrap.Modal.getInstance(document.getElementById('editProfileModal'));
                modal.hide();

                // 更新页面显示
                updatePageDisplay(phone, gender, avatarUrl);
            } else {
                alert('更新失败: ' + response.data.message);
            }
        })
        .catch(function (error) {
            console.error('更新错误:', error);
            alert('更新失败: ' + error.message);
        });
}

// 更新页面显示的函数
function updatePageDisplay(phone, gender, avatarUrl) {
    // 更新性别显示
    const genderElements = document.querySelectorAll('.gender-male, .gender-female');
    genderElements.forEach(element => {
        if (gender == '1') {
            element.textContent = '男';
            element.className = 'gender-male';
        } else {
            element.textContent = '女';
            element.className = 'gender-female';
        }
    });

    // 更新手机号显示
    document.getElementById('phoneDisplay').textContent = phone;

    // 如果有新的头像，更新头像显示
    if (avatarUrl) {
        const avatarImages = document.querySelectorAll('.avatar');
        avatarImages.forEach(img => {
            img.src = avatarUrl;
        });
    }
}